package br.com.arg.aplica.model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;

@Entity 
@XmlRootElement
public class Tela implements Serializable {
	/** Default value included to remove warning. Remove or modify at will. **/
	private static final long serialVersionUID = 1L;

	public Tela()
	{
		componentes = new ArrayList<Componente>();
		this.descricao = "Descriçao para o formato F21";
		this.dataCriacao = "22.02.2012";
		this.textoLivre = "Texto livre para o formato F21";
		this.versao = "021";
	}
	
	@Id
	@GeneratedValue
	private Long id;

	@NotNull
	@Size(min = 1, max = 64)
	private String nome;
	
	@NotNull
	@Size(min = 1, max = 255)
	private String descricao;

	@NotNull
	@Size(min = 1, max = 10)
	private String dataCriacao;

	@NotNull
	@Size(max = 10)
	@Pattern(regexp = "[0-9.-]*", message = "Somente numero . e -")
	private String versao;

	@NotNull
	@Size(min = 1, max = 255)
	private String textoLivre;

	//**********************************
	@OneToMany(cascade = CascadeType.ALL)
    private List<Componente> componentes;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public String getDataCriacao() {
		return dataCriacao;
	}

	public void setDataCriacao(String dataCriacao) {
		this.dataCriacao = dataCriacao;
	}

	public String getVersao() {
		return versao;
	}

	public void setVersao(String versao) {
		this.versao = versao;
	}

	public String getTextoLivre() {
		return textoLivre;
	}

	public void setTextoLivre(String textoLivre) {
		this.textoLivre = textoLivre;
	}

	public List<Componente> getComponentes() {
		return componentes;
	}

	public void setComponentes(List<Componente> componentes) {
		this.componentes = componentes;
	}		
}
